
package edu.uoc.tdp.servidor.impl.conexio;

import edu.uoc.tdp.beans.conexio.Administrador;
import edu.uoc.tdp.beans.conexio.Estudiant;
import edu.uoc.tdp.beans.conexio.ResponsableEvents;
import edu.uoc.tdp.beans.conexio.Usuari;
import edu.uoc.tdp.common.EOlympicsException;
import edu.uoc.tdp.common.RemotConexioInterface;
import edu.uoc.tdp.bbdd.GestorDiscConnexio;
import edu.uoc.tdp.common.EOlympicsExceptionConnexioLogin;
import edu.uoc.tdp.servidor.bbdd.conexio.GestorAcces;
import edu.uoc.tdp.servidor.bbdd.conexio.GestorUsuaris;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.List;

/**
 * Classe que implementa l'interfície RemotConexioInterface
 * Es definiran tots els mètodes que necessitem per fer servir a la
 * capa de presentació. Per accedir a BBDD sempre haurem de passar per 
 * la classe GestorXXX corresponent
 * @author Grup TDP 1X4J
 */
public class RemotConexioImpl extends UnicastRemoteObject 
                           implements RemotConexioInterface, Serializable    
{
    
    private static final long serialVersionUID = 1L;
    private GestorDiscConnexio gestorBD;

    /**
     * Constructor de la clase<br>
     * Crea una conexió a la Base de Dades
     * @exception RemoteException
     * @exception EOlympicsException
     */    
    public RemotConexioImpl() throws RemoteException, EOlympicsException {
        super();
        gestorBD = new GestorDiscConnexio();
        gestorBD.obreConnexioBD();
    }

    /**
     * @see RemotConexioInterface#getUsuari(java.lang.Int) 
     */     
    @Override
    public Usuari getUsuari(int IdUsu) throws RemoteException, EOlympicsException {
        GestorUsuaris gestorUsuaris = 
                new GestorUsuaris(gestorBD);
        
        return gestorUsuaris.obtenirUsuari(IdUsu);                    
    }

    /**
     * @see RemotConexioInterface#getUsuari(java.lang.String, java.lang.String) 
     */     
    @Override
    public Usuari getUsuari(String pIdUsuari, String pPwd) throws RemoteException, EOlympicsException {
        GestorAcces gestorUsuaris = new GestorAcces(gestorBD);
        
        return gestorUsuaris.obtenirUsuari(pIdUsuari, pPwd);                    
    }

    /**
     * @see RemotConexioInterface#getAdministrador(java.lang.Int) 
     */     
    @Override
    public Administrador getAdministrador(int IdAdm) throws RemoteException, EOlympicsException {
        GestorUsuaris gestorAdministradors = new GestorUsuaris(gestorBD);
        
        return gestorAdministradors.obtenirAdministrador(IdAdm);                    
    }
    
    /**
     * @see RemotConexioInterface#getAdministrador(java.lang.String, java.lang.String) 
     */     
    @Override
    public Administrador getAdministrador(String pIdAdmin, String pPwd) throws RemoteException, EOlympicsException {
        GestorAcces gestorAdministradors = new GestorAcces(gestorBD);
        
        return gestorAdministradors.obtenirAdministrador(pIdAdmin, pPwd);                    
    }

    /**
     * @see RemotConexioInterface#getResponsableEvents(java.lang.Int) 
     */     
    @Override
    public ResponsableEvents getResponsableEvents(int IdREv) throws RemoteException, EOlympicsException {
        GestorUsuaris gestorResponsablesEvents = new GestorUsuaris(gestorBD);
        
        return gestorResponsablesEvents.obtenirResponsableEvents(IdREv);                    
    }
    
    /**
     * @see RemotConexioInterface#getResponsableEvents(java.lang.String, java.lang.String) 
     */     
    @Override
    public ResponsableEvents getResponsableEvents(String pIdRespEv, String pPwd) throws RemoteException, EOlympicsException {
        GestorAcces gestorResponsablesEvents = new GestorAcces(gestorBD);
        
        return gestorResponsablesEvents.obtenirResponsableEvents(pIdRespEv, pPwd);                    
    }

    /**
     * @see RemotConexioInterface#getEstudiant(java.lang.Int) 
     */     
    @Override
    public Estudiant getEstudiant(int IdEst) throws RemoteException, EOlympicsException {
        GestorUsuaris gestorEstudiants = new GestorUsuaris(gestorBD);
        
        return gestorEstudiants.obtenirEstudiant(IdEst);                    
    }
    
    /**
     * @see RemotConexioInterface#getEstudiant(java.lang.String, java.lang.String) 
     */     
    @Override
    public Estudiant getEstudiant(String pIdEst, String pPwd) throws RemoteException, EOlympicsException {
        GestorAcces gestorEstudiants = new GestorAcces(gestorBD);
        
        return gestorEstudiants.obtenirEstudiant(pIdEst, pPwd);                    
    }

    /**
     * @see RemotConexioInterface#getLlistaUsuaris() 
     */     
    @Override
    public List<Usuari> getLlistaUsuaris() throws RemoteException, EOlympicsException {
        GestorUsuaris gestorUsuaris = new GestorUsuaris(gestorBD);
        
        return gestorUsuaris.obtenirLlistaUsuaris();
    }    

    /**
     * @see RemotInterface#setBloqueigUsuari(java.lang.Int) 
     */         
    @Override
    public boolean setBloqueigUsuari(int pIdIntern) throws RemoteException,
            EOlympicsException, EOlympicsExceptionConnexioLogin {
        GestorAcces gestorUsuaris = new GestorAcces(gestorBD);
        return gestorUsuaris.bloquejarUsuari(pIdIntern);
    }


    
    
}
